02. 迷你项目:动态规划 (OpenAI Gym-FrozenLakeEnv)

OpenAI Gym:FrozenLakeEnv

在这节课中,你将为我们讨论的所有算法编写你自己的 Python 实现。虽然你的实现将可以用于 OpenAI Gym 环境,但是你将使用 FrozenLake 环境测试你的代码。

在 FrozenLake 环境中,智能体探索的是 4x4 网格世界。你可以打开相应的 GitHub 文件并转到 FrozenLakeEnv 类的注释部分,详细了解该环境。澄清下,我们也摘录了该环境的说明,如下所示:

    """
    冬天来了。你和朋友在公园里投掷飞盘,你一不小心将飞盘远远地扔到了湖中心。水几乎都结冰了,但是有几个融化的洞口。如果你踏入了其中一个洞口,将掉进冰冷的水中。现在全球的飞盘都处于紧缺状态,因此你必须在湖面上拿到飞碟。但是冰面很滑,因此你并不能一直朝着期望的方向行走。冰面用以下网格形式表示
        SFFF
        FHFH
        FFFH
        HFFG
    S:起始点,安全
    F:冰冻湖面,安全
    H:洞口,跌入湖中
    G:目标,拿到飞盘
    当你抵达目的地或跌入湖中,这一阶段结束。
    当你抵达目的地时,获得奖励 1,否则获得奖励 0。

    """"

动态规划设置

OpenAI Gym 中的环境以强化学习设置为依据。因此,OpenAI Gym 不允许轻松地访问马尔可夫决策流程 (MDP) 的底层一步动态特性。

为了使用动态规划设置的 FrozenLake 环境,我们首先需要下载包含 FrozenLakeEnv 类的文件。然后,我们添加一行代码,以便将 MDP 的一步动态规划与智能体分享。

# obtain one-step dynamics for dynamic programming setting
self.P = P

然后将新的 FrozenLakeEnv 类保存到 Python 文件 frozenlake.py 中,我们将使用该文件(而不是原始 OpenAI Gym 文件)创建该环境的实例。

你的工作区

你将在课堂内编写所有的实现代码,并使用和下图所示的界面完全一样的界面。你的工作区包含五个文件:

  • frozenlake.py - 包含 FrozenLakeEnv
  • Dynamic_Programming-zh.ipynb - 迷你项目 notebook,你将在其中编写所有的实现代码(这是你唯一需要修改的文件!
  • Dynamic_Programming_Solution-zh.ipynb - 迷你项目 notebook对应的讲师解决方案
  • check_test.py - 包含单元测试,你将使用这些测试验证你的实现正确无误
  • plot_utils.py - 包含可视化状态值函数的绘图函数

可以在下方找到 Dynamic_Programming.ipynb notebook。注意,它分成了好几个部分,需要你在课程的不同环节完成。

请暂时不要编写或执行任何代码。我们将在学完几个部分之后开始在工作区内编程!

为了熟读其他文件,你只需点击左上角的“jupyter”即可返回 notebook 信息中心。

Workspace

This section contains either a workspace (it can be a Jupyter Notebook workspace or an online code editor work space, etc.) and it cannot be automatically downloaded to be generated here. Please access the classroom with your account and manually download the workspace to your local machine. Note that for some courses, Udacity upload the workspace files onto https://github.com/udacity, so you may be able to download them there.

Workspace Information:

  • Default file path:
  • Workspace type: jupyter
  • Opened files (when workspace is loaded): n/a